/**
 * @class кнопка - Закладка (открывает диалоговое окно)
 *
 * @param  elRTE  rte   объект-редактор
 * @param  String name  название кнопки
 *
 * @author:    Dmitry Levashov (dio) dio@std42.ru
 **/
(function ($) {
    elRTE.prototype.ui.prototype.buttons.anchor = function (rte, name) {
        this.constructor.prototype.constructor.call(this, rte, name);
        this.input = $('<input type="text" />').attr('name', 'anchor').attr('size', '16')
        var self = this;

        this.command = function () {
            var opts = {
                rtl:this.rte.rtl,
                submit:function (e, d) {
                    e.stopPropagation();
                    e.preventDefault();
                    d.close();
                    self.set();
                },
                dialog:{
                    title:this.rte.i18n('Bookmark')
                }
            }


            this.anchor = this.rte.dom.selfOrParentAnchor(this.rte.selection.getEnd()) || rte.dom.create('a');
            !this.rte.selection.collapsed() && this.rte.selection.collapse(false);
            this.input.val($(this.anchor).addClass('elrte-anchor').attr('name'));
            this.rte.selection.saveIERange();
            var d = new elDialogForm(opts);
            d.append([this.rte.i18n('Bookmark name'), this.input], null, true).open();
            setTimeout(function () {
                self.input.focus()
            }, 20);
        }

        this.update = function () {
            var n = this.rte.selection.getNode();
            if (this.rte.dom.selfOrParentLink(n)) {
                this.domElem.addClass('disabled');
            } else if (this.rte.dom.selfOrParentAnchor(n)) {
                this.domElem.removeClass('disabled').addClass('active');
            } else {
                this.domElem.removeClass('disabled').removeClass('active');
            }
        }

        this.set = function () {
            var n = $.trim(this.input.val());

            if (n) {
                this.rte.history.add();
                if (!this.anchor.parentNode) {
                    this.rte.selection.insertHtml('<a name="' + n + '" title="' + this.rte.i18n('Bookmark') + ': ' + n + '" class="elrte-anchor"></a>');
                } else {
                    this.anchor.name = n;
                    this.anchor.title = this.rte.i18n('Bookmark') + ': ' + n;
                }
            } else if (this.anchor.parentNode) {
                this.rte.history.add();
                this.anchor.parentNode.removeChild(this.anchor);
            }
        }
    }
})(jQuery);
